import pagesJson from '@/pages.json'
import { createRouter } from 'uni-mini-router'
import pagesJsonToRoutes from 'uni-parse-pages'

const pages = pagesJsonToRoutes(pagesJson, {
  includes: ['meta', 'path', 'aliasPath', 'name', 'perms'],
})
const router = createRouter({
  routes: pages,
})
/**
 * to: 即将要进入的目标
 * from: 当前导航正要离开的路由
 * next: 用于reslove beforeEach钩子，需要确保 next 在导航守卫中都被严格调用一次-
 * next(): 执行默认路由跳转逻辑
 * next(false): 终止跳转逻辑
 * next({ path: '/' }): 跳转到不同的页面
 * next({ path: '/', navType: 'replaceAll' }): 改变当前跳转类型并跳转到不同的页面，可以通过navType指定新的跳转类型。（实例为中断当前导航，改用replaceAll方法跳转到新的页面）
 */
router.beforeEach((to, from, next) => {
  console.log(to)
  // next入参 false 以取消导航
  // next(false)
  next()
  console.log('beforeEach', to, from)
  // const authStore = useAuthStore()
  // if (!authStore.$state.userInfo && to && to.name !== 'login') {
  //   // 如果没有登录信息且目标路由不是登录页面则跳转到登录页面
  //   next({ name: 'login', navType: 'replaceAll' })
  // } else if (authStore.$state.userInfo && to && to.name === 'login') {
  //   // 如果已经登录且目标页面是登录页面则跳转至首页
  //   next({ name: 'home', navType: 'replaceAll' })
  // } else {
  //   next()
  // }
})
/**
 * 你也可以注册全局后置钩子，然而和守卫不同的是，这些钩子不会接受 next 函数也不会改变导航本身
 * 它对于分析、更改页面标题、声明页面等辅助功能以及许多其他事情都很有用。
 */
router.afterEach((_to, _from) => {
  // console.log('afterEach', to, from)
  // const authStore = useAuthStore()
  // if (!authStore.$state.userInfo && to.name !== 'login') {
  //   // 如果没有登录信息且目标路由不是登录页面则跳转到登录页面
  //   router.replaceAll({ name: 'login' })
  // } else if (authStore.$state.userInfo && to.name === 'login') {
  //   // 如果已经登录且目标页面是登录页面则跳转至首页
  //   router.replaceAll({ name: 'home' })
  // }
})
export default router
/**
 * // 命名的路由，传递对象参数
 * router.push({ name: 'user', params: { user: encodeURIComponent(JSON.stringify(user)) } })
 *
 * // path+query，传递对象参数
 * router.push({ path: '/pages/user/user', query: { user: encodeURIComponent(JSON.stringify(user)) } })
 */
